package com.ruoyi.system.xmlAbstract.impl;


import com.ruoyi.system.xmlAbstract.XmlGenerateAbstract;
import com.ruoyi.system.xmlAbstract.dto.XmlNodeBuildDto;
import lombok.Data;
import lombok.ToString;

import java.util.List;

/**
 * Xml 格式操作类
 * @author : anxinr
 * @date : 2023/1/11 18:03
 */
@Data
@ToString
public class XmlBuild extends XmlGenerateAbstract {

    @Override
    public boolean hasCurrentNodeChild() {
        return !this.currentXmlNode.getList().isEmpty();
    }





    @Override
    public void generateChildNode(String xmlNodeCode, String xmlNodeData) {
        List<XmlNodeBuildDto> list = currentXmlNode.getList();
        list.add(new XmlNodeBuildDto(xmlNodeCode,xmlNodeData)) ;
    }

    @Override
    public void generateChildNode(String xmlNodeCode) {
        generateChildNode(xmlNodeCode,"") ;
    }

    @Override
    public void changeCurrentNodeToParentNode() throws Exception {
        /**
         * 切换当前结点为父节点 如果当前是父节点 也返回true
         * 如果不为根节点，则从根结点的子节点中遍历，如果匹配成功则返回 true
         * 并且切换当前结点为该结点的父节点
         * 若没匹配成功，则返回False
         * */
        boolean matchingResult = super.ergodicRootNodeForMatching(this.currentXmlNode ,this.rootXmlNode , this.rootXmlNode.getList());
        if (!matchingResult){
            throw new Exception("该结点不存在，当前的XML中") ;
        }
    }
}
